<html>
<head><meta charset="utf-8"><title>stats&#x27; branch · t-compiler/wg-nll · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/index.html">t-compiler/wg-nll</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html">stats&#x27; branch</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="126362646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126362646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126362646">(May 10 2018 at 12:30)</a>:</h4>
<p>so <span class="user-mention" data-user-id="116009">@nikomatsakis</span> I've managed to make your branch to compile, but I'm not sure that's what you wanted it to do</p>



<a name="126362662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126362662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126362662">(May 10 2018 at 12:31)</a>:</h4>
<p><a href="https://github.com/qmx/borrow-check/commit/1cadd3c8e4334bf2f723bc381ffca9c103648605" target="_blank" title="https://github.com/qmx/borrow-check/commit/1cadd3c8e4334bf2f723bc381ffca9c103648605">https://github.com/qmx/borrow-check/commit/1cadd3c8e4334bf2f723bc381ffca9c103648605</a></p>



<a name="126362711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126362711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126362711">(May 10 2018 at 12:32)</a>:</h4>
<p>maybe instead put a <code>*x</code> in the closure</p>



<a name="126362720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126362720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126362720">(May 10 2018 at 12:32)</a>:</h4>
<p>e.g. <code>flat_map(|(r1, r2s)| r2s.iter().map(move |r2| (r1, r2)))</code> could be:</p>



<a name="126362724"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126362724" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126362724">(May 10 2018 at 12:32)</a>:</h4>
<div class="codehilite"><pre><span></span>flat_map(|(r1, r2s)| r2s.iter().map(move |r2| (*r1, *r2)))
</pre></div>



<a name="126364294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364294">(May 10 2018 at 13:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> ok</p>



<a name="126364300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364300">(May 10 2018 at 13:17)</a>:</h4>
<p>I think I need to step back a little bit and understand the bigger picture here</p>



<a name="126364302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364302">(May 10 2018 at 13:17)</a>:</h4>
<p>I guess first thing is I have to refresh my memory what that branch was even doing</p>



<a name="126364303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364303">(May 10 2018 at 13:17)</a>:</h4>
<p>but yes, that sounds right</p>



<a name="126364305"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364305" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364305">(May 10 2018 at 13:17)</a>:</h4>
<p>we wanted to print a histogram from the analysis data</p>



<a name="126364350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364350">(May 10 2018 at 13:18)</a>:</h4>
<p>right, I remember that much :)</p>



<a name="126364351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364351">(May 10 2018 at 13:18)</a>:</h4>
<p>probably, I suspect, many histograms</p>



<a name="126364355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364355">(May 10 2018 at 13:18)</a>:</h4>
<p>but let's start with one</p>



<a name="126364356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364356">(May 10 2018 at 13:18)</a>:</h4>
<p>anyway, how far back do you want to step?</p>



<a name="126364357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364357">(May 10 2018 at 13:18)</a>:</h4>
<p>but that led me to more philosophical questions like what <code>(Region, Region)</code> actually means</p>



<a name="126364363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364363">(May 10 2018 at 13:18)</a>:</h4>
<p>(beyond tuple of regions, of course <span class="emoji emoji-1f602" title="joy">:joy:</span> )</p>



<a name="126364390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364390">(May 10 2018 at 13:20)</a>:</h4>
<p>:)</p>



<a name="126364435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364435">(May 10 2018 at 13:20)</a>:</h4>
<p>so the "underlying model" here is sort of "sets of tuples"</p>



<a name="126364437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364437">(May 10 2018 at 13:20)</a>:</h4>
<p>you can think of that in many ways</p>



<a name="126364444"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364444" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364444">(May 10 2018 at 13:20)</a>:</h4>
<p>but e.g. if we think about the blog post</p>



<a name="126364447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364447">(May 10 2018 at 13:20)</a>:</h4>
<p>it talked about something like, at this point <code>P</code> in the code, we know that <code>r1 &lt;= r2</code></p>



<a name="126364456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364456">(May 10 2018 at 13:21)</a>:</h4>
<p>and maybe at some other point <code>Q</code> we know that <code>r2 &lt;= r3</code></p>



<a name="126364458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364458">(May 10 2018 at 13:21)</a>:</h4>
<p>(with me so far?)</p>



<a name="126364459"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364459" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364459">(May 10 2018 at 13:21)</a>:</h4>
<p>yep!</p>



<a name="126364464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364464">(May 10 2018 at 13:21)</a>:</h4>
<p>we could represent those facts as a set of 3-tuples: (Point, Region, Region)</p>



<a name="126364474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364474">(May 10 2018 at 13:21)</a>:</h4>
<p>so we would have:</p>
<div class="codehilite"><pre><span></span>(P, r1, r2)
(Q, r2, r3)
</pre></div>



<a name="126364518"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364518" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364518">(May 10 2018 at 13:22)</a>:</h4>
<p>what that <code>all_subsets</code> function aims to do is to collapse that to (one sec, afk)</p>



<a name="126364574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364574">(May 10 2018 at 13:24)</a>:</h4>
<p>right so we are going to reduce those 3-tuples to ignore the points</p>



<a name="126364583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364583">(May 10 2018 at 13:25)</a>:</h4>
<p>so basically the result in this case would just be</p>
<div class="codehilite"><pre><span></span>(r1, r2)
(r2, r3)
</pre></div>



<a name="126364592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364592">(May 10 2018 at 13:25)</a>:</h4>
<p><span class="emoji emoji-2714" title="heavy check mark">:heavy_check_mark:</span> ?</p>



<a name="126364597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364597">(May 10 2018 at 13:25)</a>:</h4>
<p>gotcha</p>



<a name="126364642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364642">(May 10 2018 at 13:26)</a>:</h4>
<p>I sort of forget why I was doing <em>that</em></p>



<a name="126364643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364643">(May 10 2018 at 13:26)</a>:</h4>
<p>well, basically, I think what I figured is</p>



<a name="126364644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364644">(May 10 2018 at 13:26)</a>:</h4>
<p>in the real analysis, the subset relation kind of grows and shrinks</p>



<a name="126364647"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364647" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364647">(May 10 2018 at 13:26)</a>:</h4>
<p>but if we look at the union over all points</p>



<a name="126364648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364648">(May 10 2018 at 13:26)</a>:</h4>
<p>we get a kind of "upper bound" on how many edges result</p>



<a name="126364656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364656">(May 10 2018 at 13:27)</a>:</h4>
<p>anyway, it's not clear that this is the right kind of stats to be gathering</p>



<a name="126364665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364665">(May 10 2018 at 13:27)</a>:</h4>
<p>(but it seems like an ok starting point)</p>



<a name="126364669"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364669" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364669">(May 10 2018 at 13:27)</a>:</h4>
<p>(oh, I sort of remember, I think I wanted to print out the maximum in-degree and out-degree of a node at any particular point?)</p>



<a name="126364708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364708">(May 10 2018 at 13:28)</a>:</h4>
<p>exactly</p>



<a name="126364721"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364721" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364721">(May 10 2018 at 13:28)</a>:</h4>
<p>right so I think I was going to take those 2-tuples and then produce two results:</p>



<a name="126364734"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364734" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364734">(May 10 2018 at 13:28)</a>:</h4>
<p>like, for each region R, how many tuples are there like <code>(R, _)</code> -- that is kind of the "out-degree"</p>



<a name="126364750"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364750" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364750">(May 10 2018 at 13:29)</a>:</h4>
<p>because each tuple <code>(A, B)</code> represents an edge <code>A -&gt; B</code> in the "subset graph"</p>



<a name="126364757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364757">(May 10 2018 at 13:29)</a>:</h4>
<p>another way of saying it is that we are computing "how regions is R is a subset of"</p>



<a name="126364774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364774">(May 10 2018 at 13:29)</a>:</h4>
<p>then the other result would be "how many tuples are there like <code>(_, R)</code>"</p>



<a name="126364781"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364781" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364781">(May 10 2018 at 13:29)</a>:</h4>
<p>that answers roughly the opposite question ("how many regions are a subset of R")</p>



<a name="126364838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364838">(May 10 2018 at 13:30)</a>:</h4>
<p>this makes sense</p>



<a name="126364841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364841">(May 10 2018 at 13:30)</a>:</h4>
<p>(it's interesting to note though that these tuples will be <em>after</em> we've computed the transitive closure operation; we might later be interested in the same results, but with "transitive implications" removed...)</p>



<a name="126364848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364848">(May 10 2018 at 13:30)</a>:</h4>
<p>anyway both of those computations begin with the all_tuples computation</p>



<a name="126364849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364849">(May 10 2018 at 13:30)</a>:</h4>
<p>though it occurs to me now</p>



<a name="126364851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364851">(May 10 2018 at 13:30)</a>:</h4>
<p>that differential-dataflow would make this more elegant</p>



<a name="126364852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364852">(May 10 2018 at 13:30)</a>:</h4>
<p>maybe we should be using that :)</p>



<a name="126364861"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364861" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364861">(May 10 2018 at 13:31)</a>:</h4>
<p>/me is going back to read differential-dataflow examples</p>



<a name="126364935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364935">(May 10 2018 at 13:32)</a>:</h4>
<p>but in "normal Rust" code you might do something like:</p>
<div class="codehilite"><pre><span></span>for &quot;each region `r`&quot; {
  let out_degree = all_subset.tuples().filter(|(a, _)| if a == r).count();
  let in_degree = all_subset.tuples().filter(|(_, b)| if b == r).count();
}
</pre></div>



<a name="126364937"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364937" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364937">(May 10 2018 at 13:32)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> let's do it in normal Rust first</p>



<a name="126364943"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364943" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364943">(May 10 2018 at 13:32)</a>:</h4>
<p>I think it would be easier to learn 1 thing at a time ;)</p>



<a name="126364944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364944">(May 10 2018 at 13:32)</a>:</h4>
<p>then we can port to differential-dataflow</p>



<a name="126364946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126364946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126364946">(May 10 2018 at 13:32)</a>:</h4>
<p>fair enough</p>



<a name="126365017"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365017" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365017">(May 10 2018 at 13:34)</a>:</h4>
<p>so, once you compute those in- and out-degrees</p>



<a name="126365020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365020">(May 10 2018 at 13:34)</a>:</h4>
<p>you can then add those two pnts to the histogram</p>



<a name="126365024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365024">(May 10 2018 at 13:34)</a>:</h4>
<div class="codehilite"><pre><span></span>let mut out_histogram, in_histogram;
for &quot;each region `r`&quot; {
  let out_degree = all_subset.tuples().filter(|(a, _)| if a == r).count();
  let in_degree = all_subset.tuples().filter(|(_, b)| if b == r).count();
  out_histogram.add(out_degree);
  in_histogram.add(in_degree);
}
out_histogram.print();
in_histogram.print();
</pre></div>



<a name="126365049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365049">(May 10 2018 at 13:35)</a>:</h4>
<p>that was the idea, anyhow</p>



<a name="126365097"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365097" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365097">(May 10 2018 at 13:36)</a>:</h4>
<p>sounds like a good start, lemme give it a try</p>



<a name="126365118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365118">(May 10 2018 at 13:37)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> I suppose a more efficient formulation might be like this</p>



<a name="126365178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365178">(May 10 2018 at 13:38)</a>:</h4>
<div class="codehilite"><pre><span></span>let mut in_count, out_count = FxHashMap::default();
for (a, b) in all_subsets {
  *out_count.entry(a).or_insert(0) += 1;
  *in_count.entry(a).or_insert(0) += 1;
}
</pre></div>



<a name="126365181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365181">(May 10 2018 at 13:38)</a>:</h4>
<p>assuming no duplicates</p>



<a name="126365199"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365199" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365199">(May 10 2018 at 13:39)</a>:</h4>
<p>(we can remove duplicates in various ways)</p>



<a name="126365206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365206">(May 10 2018 at 13:40)</a>:</h4>
<p>that said, I guess what we care about is really the in-degree or out-degree at <em>any particular point</em></p>



<a name="126365246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365246">(May 10 2018 at 13:40)</a>:</h4>
<p>anyway, I'll stop badgering you and let you get something</p>



<a name="126365250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365250">(May 10 2018 at 13:40)</a>:</h4>
<p>it'll be easy to tweak</p>



<a name="126365327"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365327" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365327">(May 10 2018 at 13:42)</a>:</h4>
<p><code>tracking::RegionDegrees</code> has similar information and updating code right ?</p>



<a name="126365336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365336">(May 10 2018 at 13:42)</a>:</h4>
<p>lol, that's what I was going to ask now</p>



<a name="126365356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365356">(May 10 2018 at 13:43)</a>:</h4>
<p>heh, yes... we could use that :P</p>



<a name="126365358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126365358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126365358">(May 10 2018 at 13:43)</a>:</h4>
<p>I forgot that was there</p>



<a name="126368391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126368391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126368391">(May 10 2018 at 14:58)</a>:</h4>
<div class="codehilite"><pre><span></span>In-degree stats
# Number of samples = 22
# Min = 1
# Max = 3
#
# Mean = 1.3636363636363638
# Standard deviation = 0.5677270907634907
# Variance = 0.3223140495867768
#
# Each ∎ is a count of 1
#
 1 ..  2 [ 15 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 2 ..  3 [  6 ]: ∎∎∎∎∎∎
 3 ..  4 [  1 ]: ∎
 4 ..  5 [  0 ]:
 5 ..  6 [  0 ]:
 6 ..  7 [  0 ]:
 7 ..  8 [  0 ]:
 8 ..  9 [  0 ]:
 9 .. 10 [  0 ]:
10 .. 11 [  0 ]:
Out-degree stats
# Number of samples = 22
# Min = 1
# Max = 3
#
# Mean = 1.3636363636363638
# Standard deviation = 0.5677270907634907
# Variance = 0.3223140495867768
#
# Each ∎ is a count of 1
#
 1 ..  2 [ 15 ]: ∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
 2 ..  3 [  6 ]: ∎∎∎∎∎∎
 3 ..  4 [  1 ]: ∎
 4 ..  5 [  0 ]:
 5 ..  6 [  0 ]:
 6 ..  7 [  0 ]:
 7 ..  8 [  0 ]:
 8 ..  9 [  0 ]:
 9 .. 10 [  0 ]:
10 .. 11 [  0 ]:
</pre></div>



<a name="126368835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126368835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126368835">(May 10 2018 at 15:09)</a>:</h4>
<p>I'm having mixed feelings with the output tho, is this supposed to be something separate from dump? Cause it's a lot of info :)</p>



<a name="126368913"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126368913" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126368913">(May 10 2018 at 15:10)</a>:</h4>
<p>maybe for -v with the other in/out degree info ? (or replacing it)</p>



<a name="126368973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126368973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126368973">(May 10 2018 at 15:12)</a>:</h4>
<p>the thing is that this information has been only generated when you ask for <code>-v</code></p>



<a name="126368995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126368995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126368995">(May 10 2018 at 15:13)</a>:</h4>
<p>and I wonder if this is the expected behavior here</p>



<a name="126369006"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369006" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369006">(May 10 2018 at 15:13)</a>:</h4>
<p>I imagined a <code>--stats</code> option (or family of options)</p>



<a name="126369093"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369093" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369093">(May 10 2018 at 15:15)</a>:</h4>
<p>anyway I guess we should think about what else we want to know --</p>



<a name="126369167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369167">(May 10 2018 at 15:16)</a>:</h4>
<p>one thing  I would like is to get some idea of how many regions "go dead" at each point. Meaning that:</p>
<ul>
<li>There is an edge <code>P -&gt; Q</code></li>
<li>There is a region <code>R</code> that appears in the subset relation at <code>P</code></li>
<li>That same region <code>R</code> is not live at <code>Q</code></li>
</ul>



<a name="126369175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369175">(May 10 2018 at 15:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> if you wanted to mess about with differential-dataflow, we could talk through how to compute that</p>



<a name="126369181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369181">(May 10 2018 at 15:17)</a>:</h4>
<p>not sure if you still have more time for the morning :)</p>



<a name="126369255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369255">(May 10 2018 at 15:18)</a>:</h4>
<p>whoa, I didn't expect the clap analysis to be that slow (and big!)</p>



<a name="126369264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369264">(May 10 2018 at 15:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I can talk now, and work on it later :)</p>



<a name="126369285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369285">(May 10 2018 at 15:19)</a>:</h4>
<p>gonna dump what I have on a PR later today</p>



<a name="126369401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369401">(May 10 2018 at 15:21)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> well <a href="https://github.com/rust-lang-nursery/borrow-check/blob/440ada78e5cce8d170b32e03d05534f0d3262068/src/output/timely.rs#L86-L90" target="_blank" title="https://github.com/rust-lang-nursery/borrow-check/blob/440ada78e5cce8d170b32e03d05534f0d3262068/src/output/timely.rs#L86-L90">consider this code</a></p>



<a name="126369410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369410">(May 10 2018 at 15:21)</a>:</h4>
<p>that is currently what "moves" subset relations from a point P to its successor Q</p>



<a name="126369481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369481">(May 10 2018 at 15:23)</a>:</h4>
<p>the differential-dataflow version of the datalog is a bit complex because of the "or" (<code>;</code>)</p>



<a name="126369522"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369522" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369522">(May 10 2018 at 15:24)</a>:</h4>
<p>I glossed over that in my blog post; it's sort of a micro-perf-opt, actually</p>



<a name="126369535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369535">(May 10 2018 at 15:24)</a>:</h4>
<p>the idea is that there are some regions (the "universal regions") that are known to be live at every point</p>



<a name="126369545"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369545" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369545">(May 10 2018 at 15:24)</a>:</h4>
<p>we could generate a fact <code>region_live_at(R, P)</code> for each point P</p>



<a name="126369549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369549">(May 10 2018 at 15:24)</a>:</h4>
<p>but instead we generate one <code>universal_region(R)</code> fact</p>



<a name="126369562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369562">(May 10 2018 at 15:24)</a>:</h4>
<p>this is kind of annoying and maybe wasn't the right call =)</p>



<a name="126369577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369577">(May 10 2018 at 15:25)</a>:</h4>
<p>anyway if we look at the first bit:</p>
<div class="codehilite"><pre><span></span><span class="n">subset</span><span class="p">.</span><span class="n">map</span><span class="p">(</span><span class="o">|</span><span class="p">(</span><span class="n">r1</span><span class="p">,</span><span class="w"> </span><span class="n">r2</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">)</span><span class="o">|</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">r1</span><span class="p">,</span><span class="w"> </span><span class="n">r2</span><span class="p">))).</span><span class="n">join</span><span class="p">(</span><span class="o">&amp;</span><span class="n">cfg_edge</span><span class="p">);</span><span class="w"></span>
</pre></div>



<a name="126369585"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369585" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369585">(May 10 2018 at 15:25)</a>:</h4>
<p>at least it's &lt;5 universal regions, vs 50k region_live_at facts per universal region :)</p>



<a name="126369595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369595">(May 10 2018 at 15:25)</a>:</h4>
<p>that is equivalent to this in datalog:</p>
<div class="codehilite"><pre><span></span>subset(R1, R2, Q) :-
    subset(R1, R2, P),
    cfg_edge(P, Q).
</pre></div>



<a name="126369638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369638">(May 10 2018 at 15:26)</a>:</h4>
<p>differentia-dataflow operates over streams of tuples</p>



<a name="126369639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369639">(May 10 2018 at 15:26)</a>:</h4>
<p>the base primitive is <code>join</code></p>



<a name="126369649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369649">(May 10 2018 at 15:26)</a>:</h4>
<p>which takes one stream of tuples of type <code>(A, B)</code> and another of type <code>(A, C)</code> and produces a third stream <code>(A, B, C)</code>. think SQL join.</p>



<a name="126369656"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369656" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369656">(May 10 2018 at 15:26)</a>:</h4>
<p>i.e., tuples are matched up when the first part is equal</p>



<a name="126369674"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369674" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369674">(May 10 2018 at 15:27)</a>:</h4>
<p>so in this case we started out with tuples like <code>(r1, r2, p)</code> (that's the <code>subset</code> relation)</p>



<a name="126369681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369681">(May 10 2018 at 15:27)</a>:</h4>
<p>and we have the <code>cfg_edge</code> relation with has tuples <code>(p, q)</code></p>



<a name="126369688"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369688" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369688">(May 10 2018 at 15:27)</a>:</h4>
<p>we use <code>map</code> to reorder things so that the thing we want to join on is first, and the rest is latter</p>



<a name="126369694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369694">(May 10 2018 at 15:27)</a>:</h4>
<div class="codehilite"><pre><span></span>subset.map(|(r1, r2, p)| (p, (r1, r2)))
</pre></div>



<a name="126369696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369696">(May 10 2018 at 15:27)</a>:</h4>
<p>produces tuples <code>(p, (r1, r2))</code></p>



<a name="126369736"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369736" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369736">(May 10 2018 at 15:28)</a>:</h4>
<p>same data, different configuration</p>



<a name="126369741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369741">(May 10 2018 at 15:28)</a>:</h4>
<p>now we join that with the cfg-edge <code>(p, q)</code></p>



<a name="126369745"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369745" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369745">(May 10 2018 at 15:28)</a>:</h4>
<p>and so we will get tuples like <code>(p, (r1, r2), q)</code></p>



<a name="126369757"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369757" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369757">(May 10 2018 at 15:28)</a>:</h4>
<p>make sense?</p>



<a name="126369761"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369761" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369761">(May 10 2018 at 15:28)</a>:</h4>
<p>yep, it's dense but makes sense</p>



<a name="126369779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369779">(May 10 2018 at 15:29)</a>:</h4>
<p>that's the basic pattern, but there are two other operations used from time to time</p>



<a name="126369780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369780">(May 10 2018 at 15:29)</a>:</h4>
<p>one is <code>semijoin</code> -- this is kind of like "filter"</p>



<a name="126369784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369784">(May 10 2018 at 15:29)</a>:</h4>
<p>the other is "antijoin", which is kind of like join except it <em>removes</em> things that match</p>



<a name="126369860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369860">(May 10 2018 at 15:30)</a>:</h4>
<p>/me can see more uses for that</p>



<a name="126369889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369889">(May 10 2018 at 15:31)</a>:</h4>
<p>anyway so what I wanted to compute, expressed in <em>datalog</em>, is something like</p>
<div class="codehilite"><pre><span></span>subset(R1, R2, Q) :-
  subset(R1, R2, P),
  cfg_edge(P, Q),
  !((region_live_at(R1, Q); universal_region(R1)); (region_live_at(R2, Q); universal_region(R2))).
</pre></div>


<p>(or something like that)</p>



<a name="126369892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369892">(May 10 2018 at 15:31)</a>:</h4>
<p>that is probably not legal datalog but anyway</p>



<a name="126369901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369901">(May 10 2018 at 15:31)</a>:</h4>
<p>i.e., where there was a subset relation at the point P (<code>subset(R1, R2, P)</code>) ,and there is an edge P-&gt;Q (<code>cfg_edge(P, Q)</code>), but either r1 or r2 is not live at <code>Q</code></p>



<a name="126369951"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369951" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369951">(May 10 2018 at 15:32)</a>:</h4>
<p>we should be able to translate that into differential-dataflow with a bit of ... shuffling around of the existing equations :P</p>



<a name="126369963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126369963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126369963">(May 10 2018 at 15:33)</a>:</h4>
<p>I think I have the precise detail wrong there</p>



<a name="126370027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370027">(May 10 2018 at 15:34)</a>:</h4>
<p>said simpler, it would be something like this:</p>
<div class="codehilite"><pre><span></span>subset(R1, R2, Q) :-
  subset(R1, R2, P),
  cfg_edge(P, Q),
  (!viable_at(R1, Q)); (!viable_at(R2, Q)).

viable_at(R, P) :- region_live_at(R, P).
viable_at(R, P) :- universal_region(R). // &lt;-- though this is not valid datalog but anyway
</pre></div>



<a name="126370028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370028">(May 10 2018 at 15:34)</a>:</h4>
<p>/me will need to re-read that a few times for it to sink in</p>



<a name="126370031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370031">(May 10 2018 at 15:34)</a>:</h4>
<p>we can probably jsut ignore the universal region stuff for now</p>



<a name="126370034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370034">(May 10 2018 at 15:34)</a>:</h4>
<p>"desugar" it</p>



<a name="126370060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370060">(May 10 2018 at 15:35)</a>:</h4>
<div class="codehilite"><pre><span></span>subset(R1, R2, Q) :-
  subset(R1, R2, P),
  cfg_edge(P, Q),
  !region_live_at(R1, Q).

subset(R1, R2, Q) :-
  subset(R1, R2, P),
  cfg_edge(P, Q),
  !region_live_at(R2, Q).
</pre></div>



<a name="126370070"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370070" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370070">(May 10 2018 at 15:35)</a>:</h4>
<p>that would give rules like that (also avoiding <code>;</code>, which is sort of confusing)</p>



<a name="126370142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370142">(May 10 2018 at 15:36)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  your automatic "datalog queries to DD" builder idea is looking better and better by the minute :)</p>



<a name="126370148"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370148" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370148">(May 10 2018 at 15:36)</a>:</h4>
<p>heh yeah would be fairly easy</p>



<a name="126370155"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370155" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370155">(May 10 2018 at 15:36)</a>:</h4>
<p>once you grok the pattern, that is</p>



<a name="126370157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126370157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126370157">(May 10 2018 at 15:36)</a>:</h4>
<p>until then it looks completely opaque</p>



<a name="126371936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126371936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126371936">(May 10 2018 at 16:14)</a>:</h4>
<p>I guess the only unknown for translation here would be when to use DD's collection::iterate rather than operators on other parts of the computation ? is that because there's one "rel1(...) :- relB(...)." (eg in <code>subset</code>and <code>requires</code>) which is not present in <code>borrow_live_at</code>for example ?</p>



<a name="126372576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126372576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126372576">(May 10 2018 at 16:29)</a>:</h4>
<p>(I think it could influence how @qmx would implement <code>viable_at</code>)</p>



<a name="126376844"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126376844" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lqd <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126376844">(May 10 2018 at 18:10)</a>:</h4>
<p>or maybe more likely because those are inputs</p>



<a name="126388798"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126388798" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126388798">(May 10 2018 at 22:59)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> I'd like to measure how often the conditions <a href="https://github.com/rust-lang-nursery/borrow-check/issues/20" target="_blank" title="https://github.com/rust-lang-nursery/borrow-check/issues/20">described in #20</a> happen</p>



<a name="126389131"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389131" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389131">(May 10 2018 at 23:08)</a>:</h4>
<p><a href="https://github.com/rust-lang-nursery/borrow-check/pull/21" target="_blank" title="https://github.com/rust-lang-nursery/borrow-check/pull/21">https://github.com/rust-lang-nursery/borrow-check/pull/21</a></p>



<a name="126389312"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389312" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389312">(May 10 2018 at 23:14)</a>:</h4>
<p>ugh, I think travis got the new nightly :P</p>



<a name="126389404"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389404" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389404">(May 10 2018 at 23:16)</a>:</h4>
<p>hmm so it really is broken? sigh, I guess I have to file an issue. I was sort of half-hoping it was just my system.</p>



<a name="126389406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389406">(May 10 2018 at 23:16)</a>:</h4>
<p>though not really since then I would have to figure out why my system is different :P</p>



<a name="126389416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389416">(May 10 2018 at 23:17)</a>:</h4>
<p>I think I added a <code>rust-toolchain</code> file with an older nightly locally</p>



<a name="126389495"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389495" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389495">(May 10 2018 at 23:19)</a>:</h4>
<p>do we have all the feature we're using in beta?</p>



<a name="126389550"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389550" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389550">(May 10 2018 at 23:20)</a>:</h4>
<p>ooh, ooh, we can use <a href="https://github.com/rust-lang-nursery/cargo-bisect-rustc" target="_blank" title="https://github.com/rust-lang-nursery/cargo-bisect-rustc">https://github.com/rust-lang-nursery/cargo-bisect-rustc</a></p>



<a name="126389554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389554">(May 10 2018 at 23:20)</a>:</h4>
<p><span class="user-mention" data-user-id="116013">@qmx</span> no way man, we're bleeding edge</p>



<a name="126389560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389560">(May 10 2018 at 23:20)</a>:</h4>
<p><span class="emoji emoji-1f52a" title="kitchen knife">:kitchen_knife:</span></p>



<a name="126389749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389749">(May 10 2018 at 23:26)</a>:</h4>
<p>ok alex informed me that we must now have <code>edition = 2018</code> for that to work in our cargo.tomt</p>



<a name="126389759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389759">(May 10 2018 at 23:27)</a>:</h4>
<p>although..</p>



<a name="126389820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126389820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126389820">(May 10 2018 at 23:29)</a>:</h4>
<p>well, there's still some bugs in the newer nightlies -- specifically doc tests</p>



<a name="126390860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126390860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> qmx <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126390860">(May 10 2018 at 23:58)</a>:</h4>
<p>sooo, for <a href="https://github.com/rust-lang-nursery/borrow-check/issues/20" target="_blank" title="https://github.com/rust-lang-nursery/borrow-check/issues/20">#20</a> you want only the analysis/statistics first?</p>



<a name="126390994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126390994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126390994">(May 11 2018 at 00:03)</a>:</h4>
<p>seems like a good starting point</p>



<a name="126391001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126391001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126391001">(May 11 2018 at 00:03)</a>:</h4>
<p>I'd be curious to know how many such opportunities there are</p>



<a name="126391007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/122657-t-compiler/wg-nll/topic/stats%27%20branch/near/126391007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/122657-t-compiler/wg-nll/topic/stats&#x27;.20branch.html#126391007">(May 11 2018 at 00:03)</a>:</h4>
<p>seems like a precursor anyway if we are going to try to take advantage of them</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>